Java™ (Trademark of Sun Microsystems. Inc.) is a full-featured object oriented programming language. Thus, Java programs (applications) are written by creating a structured set of software components that interact with each other to produce the desired effects. These components are called objects, and may be arranged in a hierarchy of object classes, also simply referred to as classes. Instead of running directly on a computer's operating system, Java programs run on a Java Virtual Machine (JVM™—Trademark of Sun Microsystems, Inc.), which itself is a program that runs on a computer's operating system. Due to the object oriented nature of Java and the standardization of JVMs, Java programs may provide “Write Once, Run Anywhere” (WORA) capabilities. Java is well known to those of skill in the computer art, and need not be described further herein.
As the use of Java has expanded, it has been extended to larger and smaller scale platforms. Thus, Java has now been extended beyond Java 2 Platform, Standard Edition (J2SE™—Trademark of Sun Microsystems. Inc.) for servers and personal computers, to Java 2 Platform, Enterprise Edition (J2EE™—Trademark of Sun Microsystems. Inc.), which is a platform independent Java-centric environment for developing, building and deploying enterprise applications, and Java 2 Platform, Micro Edition (J2ME™—Trademark of Sun Microsystems. Inc.), which allows developers to use Java to create applications for wireless, mobile and consumer devices such as personal digital assistants, set top boxes, embedded devices, and mobile phones.
In J2ME, the JVM is often referred to as a Kilobyte Virtual Machine (KVM), to indicate its small size. A J2ME Mobile Information Device Profile (MIDP) allows a developer to write downloadable applications and services for J2ME devices. These applications and services are often referred to as MIDlets.
The design and operation of J2ME is summarized, for example, in the Data Sheet entitled Java 2 Platform, Micro Edition, Sun Microsystems, Inc., 2002. Moreover, it will be understood that, as used herein, the term “J2ME” is used to indicate any memory limited device which uses a micro version of Java.
Many vendors provide a Java Integrated Development Environment (IDE) as part of or in conjunction with a Software Developer's Kit (SDK). An IDE also may be provided separate from an SDK. As shown in FIG. 1, an IDE 110 can run on a host computer, also referred to herein simply as a host 120, which can comprise a personal computer or a workstation, and interfaces with an emulator 130. The IDE 110 can also interface with an actual J2ME device 140 that includes therein a KVM 150 and one or more applications (MIDlets) 160. The connection 170 between the host 120 and the J2ME device 140, can be wired and/or wireless. The interface 112 between the IDE 110 and the emulator 130 is referred to as a Unified Emulator Interface (UEI). An interface may be provided between the KVM 150 on the J2ME device 140 and the IDE 110 via the wired and/or wireless connection 170.
As is well known to those having skill in the art, in designing an application (MIDlet) 160, it may be desirable to debug the application during and/or after the design phase. Many debugging techniques are well known to those having skill in the art, and need not be described herein. In fact, the IDE 110 generally provides source level debugging of an application using the emulator 130. Unfortunately, in order to successfully debug an application 160, a new emulator 130 may need to be provided for each J2ME device 140 for which an application 160 is to be written. Moreover, it may be desirable to debug the application 160 on the KVM 150 in the J2ME device 140 itself. Unfortunately, the limited size of the KVM 150 may make it time consuming to load the debug program onto the J2ME device. Moreover, the limited size of the KVM 150 may make it impossible, in some circumstances, to run the debug program on the J2ME device 140. It is also known for the developer to package selected files for loading on the J2ME device 140.